/********************************************************************************/
/*  clickable.d																	*/
/*------------------------------------------------------------------------------*/
/*	製作		（　゜ワ゜）ノ　／　松久貫太									*/
/*	製作開始　	2007/12/06														*/
/*	MAIL		omega@personal.email.ne.jp										*/
/*	URL		http://nagoya.cool.ne.jp/o_mega										*/
/*																				*/
/*	このソースは「やわらかライセンス」の元で配布されています。					*/
/*-更新履歴---------------------------------------------------------------------*/
/*	2007/--/--																	*/
/*-その他-----------------------------------------------------------------------*/
/*	なし																		*/
/********************************************************************************/

/* ライブラリのインポート *******************************************************/
private import std.string;
private import vector;
private import hell2;
//private import string;

class ClickablePool{
	Clickable clist[];
	int count;
	const int MAX_COUNT = 32;
	
	this(){
		clist = new Clickable[MAX_COUNT];
		foreach(inout click ; clist) click = null;
		
		this.count = count;
	}
	
	void add(string str,Vec3 pos,Vec3 size){
		Clickable newc = new Clickable(str,pos,size);
		
		foreach(inout c ; clist){
			if(!c){
				c = newc;
				return;
			}
		}
	}
	
	string getMouseOver(){
		foreach(inout c ; clist){
			if(c && c.onMouse()){
				return c.str;
			}
		}
		return "";
	}
	
	string getMouseClick(){
		if(Hell_isPushMouse()) return getMouseOver();
		return "";
	}
	
	void draw(){
		foreach(inout c ; clist){
			if(c) c.draw();
		}
	}
}

class Clickable{
	Vec3 position;
	Vec3 size;
	string str;
	float zoom;
	
	this(string str,Vec3 pos,Vec3 size,float zoom = 2.0){
		this.str = str;
		this.position = pos;
		this.size = size;
		this.zoom = zoom;
	}
	
	bool onMouse(){
		if(position.x <= Hell_getMouseX() && position.x + size.x >= Hell_getMouseX()
			&& position.y <= Hell_getMouseY() && position.y + size.y >= Hell_getMouseY()) 
		{
			return true;
		}
		return false;
	}
	
	void draw(){
		if(onMouse()){
			Hell_drawFont(str , cast(int)position.x , cast(int)position.y , zoom , 255,128,32);
		}else{
			Hell_drawFont(str , cast(int)position.x , cast(int)position.y , zoom ,  64, 64, 64);
		}
	}
}

/********************************************************************************/
